#ifndef SIMULATEDKEYBOARDCONTROL_H
#define SIMULATEDKEYBOARDCONTROL_H
#include <QObject>
#include <QtCore/qglobal.h>
#ifdef Q_OS_WIN
#elif defined(Q_OS_MAC)
// 头文件
#include <CoreGraphics/CoreGraphics.h>
#endif
// 模拟键盘控制事件 ；
// 单个键 按下 ，抬起，
class SimulatedKeyboardControl
{
public:
    SimulatedKeyboardControl();

#ifdef Q_OS_WIN
    // 单个键按下 ；  要管理员扫描码才有用
    void sendKeyDown(quint8 key,bool useScanCode=true);
    // 单个键抬起  key 按下的键 ， useScanCode 是否使用扫描码 ；  要管理员扫描码才有用
    void sendKeyUp(quint8 key,bool useScanCode=true);

    void sendKey(quint8 key,bool useScanCode=true,qint32 delay = 60);


    // QList<quint8> list = getHotkeyActionValues(actionUUID, multiActionItemSettings, 0);
#elif defined(Q_OS_MAC)
    // 单个键按下 ；  要管理员扫描码才有用
    void sendKeyDown(quint16 key);
    // 单个键抬起  key 按下的键 ， useScanCode 是否使用扫描码 ；  要管理员扫描码才有用
    void sendKeyUp(quint16 key);
    // delay 按下抬起的延时， 默认60 ms
    void sendKey(quint16 key,qint32 delay = 60);

    static bool tryToCreateHidEventSource();

    static bool shiftEventFlagCount  ;
    static bool ctrlEventFlagCount  ;
    static bool commandEventFlagCount  ;
    static bool altEventFlagCount  ;
    static CGEventSourceRef hidEventSource; // 事件源
    static bool isInit ; // 判断是否初始化过
#endif
};

#endif // SIMULATEDKEYBOARDCONTROL_H
